What if I forget the '[]' when 'delete'ing array allocated via 'new X[n]'?
A: Life as we know it suddenly comes to a catastrophic end.
It is the programmer's --not the compiler's-- responsibility to get the connection between new[] and delete[] correct. If you get it wrong, neither a compile-time nor a run-time error message will be generated by the compiler.
Depending on the implementation, the results *may* be harmless if the class whose objects are being 'delete'd has no destructor, but this is implementation dependent. If the class *does* have a destructor, only the first object in the array (the one at 'ptr[0]') will be destructed properly; the rest will simply be abandoned. If the destructor releases memory, this will be a memory leak; if it closes files or unlocks semaphores or other environmental actions, system integrity may be fractured.